/**
 * The MIT License (MIT)
 *
 * Copyright (c) 2018-2019 Erik Moqvist
 *
 * Permission is hereby granted, free of charge, to any person
 * obtaining a copy of this software and associated documentation
 * files (the "Software"), to deal in the Software without
 * restriction, including without limitation the rights to use, copy,
 * modify, merge, publish, distribute, sublicense, and/or sell copies
 * of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

/**
 * This file was generated by cantools version 39.4.0 Sat Dec  2 17:22:09 2023.
 */

#ifndef MR418_H
#define MR418_H

#ifdef __cplusplus
extern "C" {
#endif

#include <stdint.h>
#include <stdbool.h>
#include <stddef.h>

#ifndef EINVAL
#    define EINVAL 22
#endif

/* Frame ids. */
#define MR418_VEH_INFO2_FRAME_ID (0x301u)
#define MR418_VEH_INFO1_FRAME_ID (0x300u)
#define MR418_QUALITY_INFORMATION_FRAME_ID (0x60du)
#define MR418_EXTENDED_INFORMATION_FRAME_ID (0x60cu)
#define MR418_GENERAL_INFORMATION_FRAME_ID (0x60bu)
#define MR418_TRACK_LIST_STATUS_FRAME_ID (0x60au)

/* Frame lengths in bytes. */
#define MR418_VEH_INFO2_LENGTH (8u)
#define MR418_VEH_INFO1_LENGTH (8u)
#define MR418_QUALITY_INFORMATION_LENGTH (8u)
#define MR418_EXTENDED_INFORMATION_LENGTH (8u)
#define MR418_GENERAL_INFORMATION_LENGTH (8u)
#define MR418_TRACK_LIST_STATUS_LENGTH (8u)

/* Extended or standard frame types. */
#define MR418_VEH_INFO2_IS_EXTENDED (0)
#define MR418_VEH_INFO1_IS_EXTENDED (0)
#define MR418_QUALITY_INFORMATION_IS_EXTENDED (0)
#define MR418_EXTENDED_INFORMATION_IS_EXTENDED (0)
#define MR418_GENERAL_INFORMATION_IS_EXTENDED (0)
#define MR418_TRACK_LIST_STATUS_IS_EXTENDED (0)

/* Frame cycle times in milliseconds. */


/* Signal choices. */
#define MR418_VEH_INFO2_GEAR_STATE_NOW_0____PARK__NEUTRAL_CHOICE (0u)
#define MR418_VEH_INFO2_GEAR_STATE_NOW_1___1ST_CHOICE (1u)
#define MR418_VEH_INFO2_GEAR_STATE_NOW_2___2ND_CHOICE (2u)
#define MR418_VEH_INFO2_GEAR_STATE_NOW_3___3RD_CHOICE (3u)
#define MR418_VEH_INFO2_GEAR_STATE_NOW_4___4TH_CHOICE (4u)
#define MR418_VEH_INFO2_GEAR_STATE_NOW_5___5TH_CHOICE (5u)
#define MR418_VEH_INFO2_GEAR_STATE_NOW_6___6TH_CHOICE (6u)
#define MR418_VEH_INFO2_GEAR_STATE_NOW_7____REVERSE_CHOICE (7u)

#define MR418_VEH_INFO2_GEAR_STA_NOW_V_0____VALID_CHOICE (0u)
#define MR418_VEH_INFO2_GEAR_STA_NOW_V_1____INVALID_CHOICE (1u)

#define MR418_VEH_INFO2_IGN_STATE_V_0____VALID_CHOICE (0u)
#define MR418_VEH_INFO2_IGN_STATE_V_1____INVALID_CHOICE (1u)

#define MR418_VEH_INFO2_IGN_STATE_0___OFF_CHOICE (0u)
#define MR418_VEH_INFO2_IGN_STATE_1___ON_CHOICE (1u)

#define MR418_VEH_INFO1_VEH_SPEED_V_0____VALID_CHOICE (0u)
#define MR418_VEH_INFO1_VEH_SPEED_V_1____INVALID_CHOICE (1u)

#define MR418_VEH_INFO1_YAW_RAT_V_0____VALID_CHOICE (0u)
#define MR418_VEH_INFO1_YAW_RAT_V_1____INVALID_CHOICE (1u)

#define MR418_VEH_INFO1_STR_ANGLE_V_0____VALID_CHOICE (0u)
#define MR418_VEH_INFO1_STR_ANGLE_V_1____INVALID_CHOICE (1u)

#define MR418_QUALITY_INFORMATION_PROB_OF_EXIST_INVALID_CHOICE (0u)
#define MR418_QUALITY_INFORMATION_PROB_OF_EXIST__25__CHOICE (1u)
#define MR418_QUALITY_INFORMATION_PROB_OF_EXIST__50__CHOICE (2u)
#define MR418_QUALITY_INFORMATION_PROB_OF_EXIST__75__CHOICE (3u)
#define MR418_QUALITY_INFORMATION_PROB_OF_EXIST__90__CHOICE (4u)
#define MR418_QUALITY_INFORMATION_PROB_OF_EXIST__99__CHOICE (5u)
#define MR418_QUALITY_INFORMATION_PROB_OF_EXIST__99_9__CHOICE (6u)
#define MR418_QUALITY_INFORMATION_PROB_OF_EXIST___100__CHOICE (7u)

#define MR418_QUALITY_INFORMATION_MEAS_STATE_NOT_CONFIRMED_CHOICE (0u)
#define MR418_QUALITY_INFORMATION_MEAS_STATE_NEW_CHOICE (1u)
#define MR418_QUALITY_INFORMATION_MEAS_STATE_MEASURED_CHOICE (2u)
#define MR418_QUALITY_INFORMATION_MEAS_STATE_PREDICTED_CHOICE (3u)

#define MR418_EXTENDED_INFORMATION_CLASSZ_POINT_CHOICE (0u)
#define MR418_EXTENDED_INFORMATION_CLASSZ_PEDESTRIAN_CHOICE (1u)
#define MR418_EXTENDED_INFORMATION_CLASSZ_CAR_CHOICE (2u)
#define MR418_EXTENDED_INFORMATION_CLASSZ_TRUCK_CHOICE (3u)
#define MR418_EXTENDED_INFORMATION_CLASSZ_BICYCLE_MOTORCYCLE_CHOICE (4u)
#define MR418_EXTENDED_INFORMATION_CLASSZ_GROUND_CHOICE (5u)
#define MR418_EXTENDED_INFORMATION_CLASSZ_HIGH_CHOICE (6u)
#define MR418_EXTENDED_INFORMATION_CLASSZ_RESERVED_CHOICE (7u)

#define MR418_GENERAL_INFORMATION_DYN_PROP_UNKNOWN_CHOICE (0u)
#define MR418_GENERAL_INFORMATION_DYN_PROP_STATIC_CHOICE (1u)
#define MR418_GENERAL_INFORMATION_DYN_PROP_STOP_CHOICE (2u)
#define MR418_GENERAL_INFORMATION_DYN_PROP_LEAVING_CHOICE (3u)
#define MR418_GENERAL_INFORMATION_DYN_PROP_ONCOMING_CHOICE (4u)
#define MR418_GENERAL_INFORMATION_DYN_PROP_CROSSING_CHOICE (5u)
#define MR418_GENERAL_INFORMATION_DYN_PROP_CROSSING_STATIONARY_CHOICE (6u)
#define MR418_GENERAL_INFORMATION_DYN_PROP_RESERVED_CHOICE (7u)

/* Frame Names. */
#define MR418_VEH_INFO2_NAME "VehInfo2"
#define MR418_VEH_INFO1_NAME "VehInfo1"
#define MR418_QUALITY_INFORMATION_NAME "QualityInformation"
#define MR418_EXTENDED_INFORMATION_NAME "ExtendedInformation"
#define MR418_GENERAL_INFORMATION_NAME "GeneralInformation"
#define MR418_TRACK_LIST_STATUS_NAME "Track_List_status"

/* Signal Names. */
#define MR418_VEH_INFO2_GEAR_STATE_NOW_NAME "GEAR_STATE_NOW"
#define MR418_VEH_INFO2_GEAR_STA_NOW_V_NAME "GEAR_STA_NOW_V"
#define MR418_VEH_INFO2_IGN_STATE_V_NAME "IGN_State_V"
#define MR418_VEH_INFO2_IGN_STATE_NAME "IGN_State"
#define MR418_VEH_INFO1_VEH_SPEED_V_NAME "VehSpeed_V"
#define MR418_VEH_INFO1_YAW_RAT_V_NAME "YawRat_V"
#define MR418_VEH_INFO1_STR_ANGLE_V_NAME "Str_Angle_V"
#define MR418_VEH_INFO1_CHANGCHENG_VEHICLE_SPD_NAME "changcheng_VehicleSpd"
#define MR418_VEH_INFO1_CHANGCHENG_YAW_RATE_NAME "changcheng_YawRate"
#define MR418_VEH_INFO1_STR_ANGLE_NAME "Str_Angle"
#define MR418_QUALITY_INFORMATION_ID_NAME "ID"
#define MR418_QUALITY_INFORMATION_SNR_NAME "SNR"
#define MR418_QUALITY_INFORMATION_DIS_LON_RMS_NAME "DisLon_RMS"
#define MR418_QUALITY_INFORMATION_VREL_LON_RMS_NAME "VrelLon_RMS"
#define MR418_QUALITY_INFORMATION_DIS_LAT_RMS_NAME "DisLat_RMS"
#define MR418_QUALITY_INFORMATION_VREL_LAT_RMS_NAME "VrelLat_RMS"
#define MR418_QUALITY_INFORMATION_PROB_OF_EXIST_NAME "ProbOfExist"
#define MR418_QUALITY_INFORMATION_MEAS_STATE_NAME "MeasState"
#define MR418_QUALITY_INFORMATION_AGE_NAME "age"
#define MR418_QUALITY_INFORMATION_COUNT_NAME "count"
#define MR418_EXTENDED_INFORMATION_ID_NAME "ID"
#define MR418_EXTENDED_INFORMATION_ORIENTATION_ANGLE_NAME "OrientationAngle"
#define MR418_EXTENDED_INFORMATION_CORNER_REL_LEN_NAME "CornerRelLen"
#define MR418_EXTENDED_INFORMATION_CORNER_REL_WID_NAME "CornerRelWid"
#define MR418_EXTENDED_INFORMATION_CLASSZ_NAME "Classz"
#define MR418_EXTENDED_INFORMATION_LENGTH_NAME "Length"
#define MR418_EXTENDED_INFORMATION_WIDTH_NAME "Width"
#define MR418_EXTENDED_INFORMATION_AREL_LON_NAME "ArelLon"
#define MR418_EXTENDED_INFORMATION_AREL_LAT_NAME "ArelLat"
#define MR418_GENERAL_INFORMATION_ID_NAME "ID"
#define MR418_GENERAL_INFORMATION_DIST_LON_NAME "DistLon"
#define MR418_GENERAL_INFORMATION_DIST_LAT_NAME "DistLat"
#define MR418_GENERAL_INFORMATION_VREL_LON_NAME "VrelLon"
#define MR418_GENERAL_INFORMATION_VREL_LAT_NAME "VrelLat"
#define MR418_GENERAL_INFORMATION_DYN_PROP_NAME "DynProp"
#define MR418_GENERAL_INFORMATION_RCS_NAME "RCS"
#define MR418_TRACK_LIST_STATUS_OBJECT_NOF_OBJECTS_NAME "Object_NofObjects"
#define MR418_TRACK_LIST_STATUS_OBJECT_MEAS_COUNTER_NAME "Object_MeasCounter"
#define MR418_TRACK_LIST_STATUS_OBJECT_INTERFACE_VERSION_NAME "Object_InterfaceVersion"

/**
 * Signals in message VehInfo2.
 *
 * All signal values are as on the CAN bus.
 */
struct mr418_veh_info2_t {
    /**
     * Range: 0..7 (0..7 -)
     * Scale: 1
     * Offset: 0
     */
    uint8_t gear_state_now;

    /**
     * Range: 0..1 (0..1 -)
     * Scale: 1
     * Offset: 0
     */
    uint8_t gear_sta_now_v;

    /**
     * Range: 0..1 (0..1 -)
     * Scale: 1
     * Offset: 0
     */
    uint8_t ign_state_v;

    /**
     * Range: 0..1 (0..1 -)
     * Scale: 1
     * Offset: 0
     */
    uint8_t ign_state;
};

/**
 * Signals in message VehInfo1.
 *
 * All signal values are as on the CAN bus.
 */
struct mr418_veh_info1_t {
    /**
     * Range: 0..1 (0..1 -)
     * Scale: 1
     * Offset: 0
     */
    uint8_t veh_speed_v;

    /**
     * Range: 0..1 (0..1 -)
     * Scale: 1
     * Offset: 0
     */
    uint8_t yaw_rat_v;

    /**
     * Range: 0..1 (0..1 -)
     * Scale: 1
     * Offset: 0
     */
    uint8_t str_angle_v;

    /**
     * Range: 0..5333 (0..299.9813 km/h)
     * Scale: 0.05625
     * Offset: 0
     */
    uint16_t changcheng_vehicle_spd;

    /**
     * Range: 0..17442 (-2.093..2.093 rad/s)
     * Scale: 0.00024
     * Offset: -2.093
     */
    uint16_t changcheng_yaw_rate;

    /**
     * Range: 0..18000 (-900..900 deg)
     * Scale: 0.1
     * Offset: -900
     */
    uint16_t str_angle;
};

/**
 * Signals in message QualityInformation.
 *
 * All signal values are as on the CAN bus.
 */
struct mr418_quality_information_t {
    /**
     * Range: 0..255 (0..255 -)
     * Scale: 1
     * Offset: 0
     */
    uint8_t id;

    /**
     * Range: 0..255 (7..86.6875 dB)
     * Scale: 0.3125
     * Offset: 7
     */
    uint8_t snr;

    /**
     * Range: 0..31 (0..31 -)
     * Scale: 1
     * Offset: 0
     */
    uint8_t dis_lon_rms;

    /**
     * Range: 0..31 (0..31 -)
     * Scale: 1
     * Offset: 0
     */
    uint8_t vrel_lon_rms;

    /**
     * Range: 0..31 (0..31 -)
     * Scale: 1
     * Offset: 0
     */
    uint8_t dis_lat_rms;

    /**
     * Range: 0..31 (0..31 -)
     * Scale: 1
     * Offset: 0
     */
    uint8_t vrel_lat_rms;

    /**
     * 0x0: invalid
     * 0x1: <25%
     * 0x2: <50%
     * 0x3: <75%
     * 0x4: <90%
     * 0x5: <99%
     * 0x6: <99.9%
     * 0x7: <=100%
     *
     * Range: 0..7 (0..7 -)
     * Scale: 1
     * Offset: 0
     */
    uint8_t prob_of_exist;

    /**
     * 0x0: notConfirmed
     * 0x1: new
     * 0x2: Measured
     * 0x3: Predicted
     *
     * Range: 0..3 (0..3 -)
     * Scale: 1
     * Offset: 0
     */
    uint8_t meas_state;

    /**
     * Range: 0..4095 (0..4095 ֡)
     * Scale: 1
     * Offset: 0
     */
    uint16_t age;

    /**
     * Range: 0..2047 (0..2047 ֡)
     * Scale: 1
     * Offset: 0
     */
    uint16_t count;
};

/**
 * Signals in message ExtendedInformation.
 *
 * All signal values are as on the CAN bus.
 */
struct mr418_extended_information_t {
    /**
     * Range: 0..255 (0..255 -)
     * Scale: 1
     * Offset: 0
     */
    uint8_t id;

    /**
     * Range: 0..900 (-180..180 degree)
     * Scale: 0.4
     * Offset: -180
     */
    uint16_t orientation_angle;

    /**
     * Range: 0..63 (0..63 (Length/63))
     * Scale: 1
     * Offset: 0
     */
    uint8_t corner_rel_len;

    /**
     * Range: 0..31 (0..31 (Width/31))
     * Scale: 1
     * Offset: 0
     */
    uint8_t corner_rel_wid;

    /**
     * 0x0: point
     * 0x1: pedestrian
     * 0x2: car
     * 0x3: truck
     * 0x4: bicycle/motorcycle
     * 0x5: ground
     * 0x6: high
     *
     * Range: 0..7 (0..7 -)
     * Scale: 1
     * Offset: 0
     */
    uint8_t classz;

    /**
     * Range: 0..255 (0..25.5 m)
     * Scale: 0.1
     * Offset: 0
     */
    uint8_t length;

    /**
     * Range: 0..31 (0..3.1 m)
     * Scale: 0.1
     * Offset: 0
     */
    uint8_t width;

    /**
     * Range: 0..1023 (-10..10.46 m/s^2)
     * Scale: 0.02
     * Offset: -10
     */
    uint16_t arel_lon;

    /**
     * Range: 0..511 (-5..5.22 m/s^2)
     * Scale: 0.02
     * Offset: -5
     */
    uint16_t arel_lat;
};

/**
 * Signals in message GeneralInformation.
 *
 * All signal values are as on the CAN bus.
 */
struct mr418_general_information_t {
    /**
     * Range: 0..255 (0..255 -)
     * Scale: 1
     * Offset: 0
     */
    uint8_t id;

    /**
     * Range: 0..4095 (0..511.875 m)
     * Scale: 0.125
     * Offset: 0
     */
    uint16_t dist_lon;

    /**
     * Range: 0..4095 (-102.4..102.35 m)
     * Scale: 0.05
     * Offset: -102.4
     */
    uint16_t dist_lat;

    /**
     * Range: 0..2047 (-120..84.7 m/s)
     * Scale: 0.1
     * Offset: -120
     */
    uint16_t vrel_lon;

    /**
     * Range: 0..596 (-64..10.46 m/s)
     * Scale: 0.125
     * Offset: -64
     */
    uint16_t vrel_lat;

    /**
     * 0x0: unknown
     * 0x1: static
     * 0x2: stop
     * 0x3: leaving
     * 0x4: oncoming
     * 0x5: crossing
     * 0x6: crossing stationary
     * 0x7: reserved
     *
     * Range: 0..7 (0..7 -)
     * Scale: 1
     * Offset: 0
     */
    uint8_t dyn_prop;

    /**
     * Range: 0..255 (-64..63.5 dBm^2)
     * Scale: 0.5
     * Offset: -64
     */
    uint8_t rcs;
};

/**
 * Signals in message Track_List_status.
 *
 * All signal values are as on the CAN bus.
 */
struct mr418_track_list_status_t {
    /**
     * Range: 0..255 (0..255 -)
     * Scale: 1
     * Offset: 0
     */
    uint8_t object_nof_objects;

    /**
     * Range: 0..65535 (0..65535 -)
     * Scale: 1
     * Offset: 0
     */
    uint16_t object_meas_counter;

    /**
     * Range: 0..15 (0..15 -)
     * Scale: 1
     * Offset: 0
     */
    uint8_t object_interface_version;
};

/**
 * Pack message VehInfo2.
 *
 * @param[out] dst_p Buffer to pack the message into.
 * @param[in] src_p Data to pack.
 * @param[in] size Size of dst_p.
 *
 * @return Size of packed data, or negative error code.
 */
int mr418_veh_info2_pack(
    uint8_t *dst_p,
    const struct mr418_veh_info2_t *src_p,
    size_t size);

/**
 * Unpack message VehInfo2.
 *
 * @param[out] dst_p Object to unpack the message into.
 * @param[in] src_p Message to unpack.
 * @param[in] size Size of src_p.
 *
 * @return zero(0) or negative error code.
 */
int mr418_veh_info2_unpack(
    struct mr418_veh_info2_t *dst_p,
    const uint8_t *src_p,
    size_t size);

/**
 * Init message fields to default values from VehInfo2.
 *
 * @param[in] msg_p Message to init.
 *
 * @return zero(0) on success or (-1) in case of nullptr argument.
 */
int mr418_veh_info2_init(struct mr418_veh_info2_t *msg_p);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_veh_info2_gear_state_now_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_veh_info2_gear_state_now_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_veh_info2_gear_state_now_is_in_range(uint8_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_veh_info2_gear_sta_now_v_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_veh_info2_gear_sta_now_v_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_veh_info2_gear_sta_now_v_is_in_range(uint8_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_veh_info2_ign_state_v_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_veh_info2_ign_state_v_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_veh_info2_ign_state_v_is_in_range(uint8_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_veh_info2_ign_state_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_veh_info2_ign_state_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_veh_info2_ign_state_is_in_range(uint8_t value);

/**
 * Pack message VehInfo1.
 *
 * @param[out] dst_p Buffer to pack the message into.
 * @param[in] src_p Data to pack.
 * @param[in] size Size of dst_p.
 *
 * @return Size of packed data, or negative error code.
 */
int mr418_veh_info1_pack(
    uint8_t *dst_p,
    const struct mr418_veh_info1_t *src_p,
    size_t size);

/**
 * Unpack message VehInfo1.
 *
 * @param[out] dst_p Object to unpack the message into.
 * @param[in] src_p Message to unpack.
 * @param[in] size Size of src_p.
 *
 * @return zero(0) or negative error code.
 */
int mr418_veh_info1_unpack(
    struct mr418_veh_info1_t *dst_p,
    const uint8_t *src_p,
    size_t size);

/**
 * Init message fields to default values from VehInfo1.
 *
 * @param[in] msg_p Message to init.
 *
 * @return zero(0) on success or (-1) in case of nullptr argument.
 */
int mr418_veh_info1_init(struct mr418_veh_info1_t *msg_p);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_veh_info1_veh_speed_v_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_veh_info1_veh_speed_v_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_veh_info1_veh_speed_v_is_in_range(uint8_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_veh_info1_yaw_rat_v_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_veh_info1_yaw_rat_v_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_veh_info1_yaw_rat_v_is_in_range(uint8_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_veh_info1_str_angle_v_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_veh_info1_str_angle_v_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_veh_info1_str_angle_v_is_in_range(uint8_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint16_t mr418_veh_info1_changcheng_vehicle_spd_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_veh_info1_changcheng_vehicle_spd_decode(uint16_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_veh_info1_changcheng_vehicle_spd_is_in_range(uint16_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint16_t mr418_veh_info1_changcheng_yaw_rate_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_veh_info1_changcheng_yaw_rate_decode(uint16_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_veh_info1_changcheng_yaw_rate_is_in_range(uint16_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint16_t mr418_veh_info1_str_angle_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_veh_info1_str_angle_decode(uint16_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_veh_info1_str_angle_is_in_range(uint16_t value);

/**
 * Pack message QualityInformation.
 *
 * @param[out] dst_p Buffer to pack the message into.
 * @param[in] src_p Data to pack.
 * @param[in] size Size of dst_p.
 *
 * @return Size of packed data, or negative error code.
 */
int mr418_quality_information_pack(
    uint8_t *dst_p,
    const struct mr418_quality_information_t *src_p,
    size_t size);

/**
 * Unpack message QualityInformation.
 *
 * @param[out] dst_p Object to unpack the message into.
 * @param[in] src_p Message to unpack.
 * @param[in] size Size of src_p.
 *
 * @return zero(0) or negative error code.
 */
int mr418_quality_information_unpack(
    struct mr418_quality_information_t *dst_p,
    const uint8_t *src_p,
    size_t size);

/**
 * Init message fields to default values from QualityInformation.
 *
 * @param[in] msg_p Message to init.
 *
 * @return zero(0) on success or (-1) in case of nullptr argument.
 */
int mr418_quality_information_init(struct mr418_quality_information_t *msg_p);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_quality_information_id_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_quality_information_id_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_quality_information_id_is_in_range(uint8_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_quality_information_snr_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_quality_information_snr_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_quality_information_snr_is_in_range(uint8_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_quality_information_dis_lon_rms_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_quality_information_dis_lon_rms_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_quality_information_dis_lon_rms_is_in_range(uint8_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_quality_information_vrel_lon_rms_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_quality_information_vrel_lon_rms_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_quality_information_vrel_lon_rms_is_in_range(uint8_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_quality_information_dis_lat_rms_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_quality_information_dis_lat_rms_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_quality_information_dis_lat_rms_is_in_range(uint8_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_quality_information_vrel_lat_rms_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_quality_information_vrel_lat_rms_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_quality_information_vrel_lat_rms_is_in_range(uint8_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_quality_information_prob_of_exist_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_quality_information_prob_of_exist_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_quality_information_prob_of_exist_is_in_range(uint8_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_quality_information_meas_state_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_quality_information_meas_state_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_quality_information_meas_state_is_in_range(uint8_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint16_t mr418_quality_information_age_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_quality_information_age_decode(uint16_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_quality_information_age_is_in_range(uint16_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint16_t mr418_quality_information_count_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_quality_information_count_decode(uint16_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_quality_information_count_is_in_range(uint16_t value);

/**
 * Pack message ExtendedInformation.
 *
 * @param[out] dst_p Buffer to pack the message into.
 * @param[in] src_p Data to pack.
 * @param[in] size Size of dst_p.
 *
 * @return Size of packed data, or negative error code.
 */
int mr418_extended_information_pack(
    uint8_t *dst_p,
    const struct mr418_extended_information_t *src_p,
    size_t size);

/**
 * Unpack message ExtendedInformation.
 *
 * @param[out] dst_p Object to unpack the message into.
 * @param[in] src_p Message to unpack.
 * @param[in] size Size of src_p.
 *
 * @return zero(0) or negative error code.
 */
int mr418_extended_information_unpack(
    struct mr418_extended_information_t *dst_p,
    const uint8_t *src_p,
    size_t size);

/**
 * Init message fields to default values from ExtendedInformation.
 *
 * @param[in] msg_p Message to init.
 *
 * @return zero(0) on success or (-1) in case of nullptr argument.
 */
int mr418_extended_information_init(struct mr418_extended_information_t *msg_p);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_extended_information_id_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_extended_information_id_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_extended_information_id_is_in_range(uint8_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint16_t mr418_extended_information_orientation_angle_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_extended_information_orientation_angle_decode(uint16_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_extended_information_orientation_angle_is_in_range(uint16_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_extended_information_corner_rel_len_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_extended_information_corner_rel_len_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_extended_information_corner_rel_len_is_in_range(uint8_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_extended_information_corner_rel_wid_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_extended_information_corner_rel_wid_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_extended_information_corner_rel_wid_is_in_range(uint8_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_extended_information_classz_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_extended_information_classz_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_extended_information_classz_is_in_range(uint8_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_extended_information_length_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_extended_information_length_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_extended_information_length_is_in_range(uint8_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_extended_information_width_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_extended_information_width_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_extended_information_width_is_in_range(uint8_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint16_t mr418_extended_information_arel_lon_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_extended_information_arel_lon_decode(uint16_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_extended_information_arel_lon_is_in_range(uint16_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint16_t mr418_extended_information_arel_lat_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_extended_information_arel_lat_decode(uint16_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_extended_information_arel_lat_is_in_range(uint16_t value);

/**
 * Pack message GeneralInformation.
 *
 * @param[out] dst_p Buffer to pack the message into.
 * @param[in] src_p Data to pack.
 * @param[in] size Size of dst_p.
 *
 * @return Size of packed data, or negative error code.
 */
int mr418_general_information_pack(
    uint8_t *dst_p,
    const struct mr418_general_information_t *src_p,
    size_t size);

/**
 * Unpack message GeneralInformation.
 *
 * @param[out] dst_p Object to unpack the message into.
 * @param[in] src_p Message to unpack.
 * @param[in] size Size of src_p.
 *
 * @return zero(0) or negative error code.
 */
int mr418_general_information_unpack(
    struct mr418_general_information_t *dst_p,
    const uint8_t *src_p,
    size_t size);

/**
 * Init message fields to default values from GeneralInformation.
 *
 * @param[in] msg_p Message to init.
 *
 * @return zero(0) on success or (-1) in case of nullptr argument.
 */
int mr418_general_information_init(struct mr418_general_information_t *msg_p);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_general_information_id_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_general_information_id_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_general_information_id_is_in_range(uint8_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint16_t mr418_general_information_dist_lon_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_general_information_dist_lon_decode(uint16_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_general_information_dist_lon_is_in_range(uint16_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint16_t mr418_general_information_dist_lat_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_general_information_dist_lat_decode(uint16_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_general_information_dist_lat_is_in_range(uint16_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint16_t mr418_general_information_vrel_lon_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_general_information_vrel_lon_decode(uint16_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_general_information_vrel_lon_is_in_range(uint16_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint16_t mr418_general_information_vrel_lat_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_general_information_vrel_lat_decode(uint16_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_general_information_vrel_lat_is_in_range(uint16_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_general_information_dyn_prop_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_general_information_dyn_prop_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_general_information_dyn_prop_is_in_range(uint8_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_general_information_rcs_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_general_information_rcs_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_general_information_rcs_is_in_range(uint8_t value);

/**
 * Pack message Track_List_status.
 *
 * @param[out] dst_p Buffer to pack the message into.
 * @param[in] src_p Data to pack.
 * @param[in] size Size of dst_p.
 *
 * @return Size of packed data, or negative error code.
 */
int mr418_track_list_status_pack(
    uint8_t *dst_p,
    const struct mr418_track_list_status_t *src_p,
    size_t size);

/**
 * Unpack message Track_List_status.
 *
 * @param[out] dst_p Object to unpack the message into.
 * @param[in] src_p Message to unpack.
 * @param[in] size Size of src_p.
 *
 * @return zero(0) or negative error code.
 */
int mr418_track_list_status_unpack(
    struct mr418_track_list_status_t *dst_p,
    const uint8_t *src_p,
    size_t size);

/**
 * Init message fields to default values from Track_List_status.
 *
 * @param[in] msg_p Message to init.
 *
 * @return zero(0) on success or (-1) in case of nullptr argument.
 */
int mr418_track_list_status_init(struct mr418_track_list_status_t *msg_p);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_track_list_status_object_nof_objects_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_track_list_status_object_nof_objects_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_track_list_status_object_nof_objects_is_in_range(uint8_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint16_t mr418_track_list_status_object_meas_counter_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_track_list_status_object_meas_counter_decode(uint16_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_track_list_status_object_meas_counter_is_in_range(uint16_t value);

/**
 * Encode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to encode.
 *
 * @return Encoded signal.
 */
uint8_t mr418_track_list_status_object_interface_version_encode(double value);

/**
 * Decode given signal by applying scaling and offset.
 *
 * @param[in] value Signal to decode.
 *
 * @return Decoded signal.
 */
double mr418_track_list_status_object_interface_version_decode(uint8_t value);

/**
 * Check that given signal is in allowed range.
 *
 * @param[in] value Signal to check.
 *
 * @return true if in range, false otherwise.
 */
bool mr418_track_list_status_object_interface_version_is_in_range(uint8_t value);


#ifdef __cplusplus
}
#endif

#endif
